The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
Sophisticated operating systems (OS) power both general purpose computers and special purpose devices like digital cameras, scanners, etc. One of the often touted advantages of an OS is that it allows a user to use multiple software applications concurrently. Frequently, these software applications access hardware components that are connected to the processor of the device via a hardware interface. Depending on the system architecture, hardware components may share a common hardware interface. A hardware interface may include a PCI bus, a USB bus, an ISA bus, an ATAPI bus and/or any proprietary interface that allows multiple hardware components to communicate via the hardware interface with a processor. An access to a hardware component via the hardware interface may consume a finite amount of time depending on the type of access. For purposes of this discussion, hardware components include flash memory, compact flash, printers, scanners, hard drives, DVDs, CDs, USB memory sticks, etc. For the duration of the access, other software applications are sometimes locked out from accessing other hardware components connected to the hardware interface. This is undesirable if another application needs to access another hardware component to perform a time-critical operation. It may be desirable to share the common hardware interface between several applications in an ordered and configurable fashion.
Separately, the amount of data transferred between a software application and a hardware component depends on the type of access. For example, a status check of a hardware component may only consume a small amount of time. In contrast, transferring a file comprising several megabytes of data may consume a larger amount of time. Accesses that are time intensive may be speeded up by deploying available hardware resources to the access. It may be desirable to allocate hardware resources to an access based on a metric that quantifies or qualifies the type of access. If such allocation (and de-allocation) is performed in a flexible, transparent manner, scarce and finite hardware resources may be judiciously utilized to optimize the operation of a system, in general.